package com.sam.d_springaop;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * 通知类
 *
 * @Author: SamZhao
 * @Description:
 * @Date: 2018/01/13 14:47
 */
public class MyAdvice {

    //前置通知
    public void before() {
        System.out.println("这是前置通知...");
    }

    //后置通知（如果出现异常 不会调用）
    public void afterReturning() {
        System.out.println("这是后置通知（如果出现异常 不会调用）...");
    }

    //环绕通知
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("这是环绕通知之前部分...");
        Object object = joinPoint.proceed();//调用目标方法
        System.out.println("这是环绕通知之后部分...");
        return object;
    }

    //异常拦截通知
    public void afterException() {
        System.out.println("这是异常拦截通知...");
    }

    //后置通知（无论是否出现异常 都会调用）
    public void after() {
        System.out.println("这是后置通知（无论是否出现异常 都会调用）...");
    }
}
